home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 4: GNU Archives / Linux Cubed Series 4 - GNU Archives.iso / gnu / glibc-1.09 / glibc-1 / glibc-1.09.1 / Rules < prev    next >
Encoding:
Text File  |  1994-08-16  |  3.7 KB  |  129 lines

  1. # Copyright (C) 1991, 1992, 1993, 1994 Free Software Foundation, Inc.
  2. # This file is part of the GNU C Library.
  3.  
  4. # The GNU C Library is free software; you can redistribute it and/or
  5. # modify it under the terms of the GNU Library General Public License as
  6. # published by the Free Software Foundation; either version 2 of the
  7. # License, or (at your option) any later version.
  8.  
  9. # The GNU C Library is distributed in the hope that it will be useful,
  10. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  12. # Library General Public License for more details.
  13.  
  14. # You should have received a copy of the GNU Library General Public
  15. # License along with the GNU C Library; see the file COPYING.LIB.  If
  16. # not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  17. # Cambridge, MA 02139, USA.
  18.  
  19. #
  20. #    Rules for making a subdirectory in the GNU C library.
  21. #    Each subdirectory Makefile defines some variables and includes this.
  22. #
  23. ifneq (,)
  24. This makefile requires GNU Make.
  25. endif
  26.  
  27. all: # Don't let the default goal come from Makeconfig.
  28.  
  29. include ../Makeconfig
  30.  
  31. ifndef    subdir
  32. Each subdirectory makefile must define the `subdir' variable.
  33. endif
  34. # This is benign and useless in GNU make before 3.63.
  35. export subdir := $(subdir)
  36.  
  37. # This is the default target; it makes the library and auxiliary programs.
  38. .PHONY: all
  39. all: lib others
  40.  
  41. ifneq    "$(findstring env,$(origin headers))" ""
  42. headers :=
  43. endif
  44.  
  45. ifneq    "$(findstring env,$(origin generated))" ""
  46. generated :=
  47. endif
  48.  
  49. ifeq "$(strip $(headers))" ""
  50. ifneq "$(wildcard $(subdir).h)" ""
  51. override headers := $(subdir).h
  52. endif
  53. endif
  54.  
  55. include ../Makerules
  56.  
  57. .PHONY: subdir_lib
  58. subdir_lib: lib-noranlib
  59.  
  60. # Some subdirs need to install a dummy library.
  61. # They can use "$(objpfx)libfnord.a: $(dep-dummy-lib); $(make-dummy-lib)".
  62. dep-dummy-lib = $(objpfx)dummy.o
  63. define make-dummy-lib
  64. $(AR) cr$(verbose) $@ $<
  65. endef
  66. $(objpfx)dummy.o:
  67.     @rm -f $(@:.o=.c)
  68.     cp /dev/null $(@:.o=.c)
  69.     $(CC) -c $(@:.o=.c) -o $@
  70.  
  71. # This makes all the auxilliary and test programs.
  72.  
  73. .PHONY: others tests
  74. others: $(addprefix $(objpfx),$(others))
  75. ifeq ($(cross-compiling),yes)
  76. tests: $(addprefix $(objpfx),$(tests))
  77. else
  78. tests: $(tests:%=$(objpfx)%.out)
  79. endif
  80.  
  81. ifneq "$(strip $(others) $(tests))" ""
  82. $(addprefix $(objpfx),$(others) $(tests)): %: %.o $(libc.a)
  83.     $(+link)
  84. endif
  85.  
  86. ifneq "$(strip $(tests))" ""
  87. # These are the implicit rules for making test outputs
  88. # from the test programs and whatever input files are present.
  89. $(objpfx)%.out: $(objpfx)% %.args %.input
  90.     $(dir $<)$(notdir $<) `cat $(word 2,$^)` < $(word 3,$^) > $@
  91. $(objpfx)%.out: $(objpfx)% %.args
  92.     $(dir $<)$(notdir $<) `cat $(word 2,$^)` > $@
  93. $(objpfx)%.out: $(objpfx)% %.input
  94.     $(dir $<)$(notdir $<) < $(word 2,$^) > $@
  95. $(objpfx)%.out: $(objpfx)%
  96.     $(dir $<)$(notdir $<) > $@
  97. endif    # tests
  98.  
  99. .PHONY: distclean realclean subdir_distclean subdir_realclean \
  100.     subdir_clean subdir_mostlyclean
  101. subdir_mostlyclean: mostlyclean
  102. subdir_clean: clean
  103. subdir_distclean: distclean
  104. subdir_realclean: realclean
  105. realclean: distclean
  106. distclean: clean
  107.  
  108. .PHONY: subdir_echo-headers
  109. subdir_echo-headers: echo-headers
  110.  
  111. .PHONY: subdir_echo-distinfo
  112. subdir_echo-distinfo:
  113.     @echo $(addprefix +header+,$(headers)) \
  114.           $(addprefix +nodist+,$(generated) $(dont_distribute))
  115.  
  116. # We want to install everything except the library itself, but update all
  117. # our portions of the library because the parent make will install it later
  118. # (likewise the stubs file).
  119. .PHONY: subdir_install
  120. subdir_install: install-no-libc.a lib-noranlib stubs
  121.  
  122. .PHONY: subdir_TAGS subdir_dist
  123. subdir_TAGS: TAGS
  124. subdir_dist: dist
  125.  
  126. # Convenient target to update all the generated source files.
  127. .PHONY: generated
  128. generated: $(addprefix $(objpfx),$(generated))
  129.